home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / sound / cpumodf3.lzh / CPU_MOD.F30 / CPU_MODX.S < prev    next >
Text File  |  1990-01-01  |  5KB  |  248 lines

  1. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2. ;~~~ Shell *.TTP type for the CPU_MOD.BIN routine  ~~~
  3. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4. ;CPU_MOD.BIN is relocatable , need 70000 bytes free after the code
  5. ;and you must be in Supervisor mode.
  6.  
  7.     OUTPUT CPU_MODX.TTP
  8.  
  9. ;Call in C-type:
  10. ;-------------------------------------------------------------------------------
  11. ;Error.B = CPU_MOD( Cmd.W , 8_16.W , Mo_St.W , Freq.W , MOD_Ad.L , MOD_Ln.L )
  12. ;D0            SP+4    SP+6     SP+8      SP+10    SP+12       SP+16
  13.  
  14. ;Error= 0:No error
  15. ;      -1:Error (Power OFF ? , Incorrect module ? , No module ?)
  16.  
  17. ;Cmd=     0:-
  18. ;     1:Power OFF/ON                     [Esc]
  19. ;     2:Open new module at address=MOD_Ad and length=MOD_Ln
  20. ;     3:Pause/Play                        [SP]
  21. ;     4:Stop                         [-]
  22. ;     5:Song position Reverse Search             [(]
  23. ;     6:Song position Forward Search             [)]
  24. ;     7:Fast Forward mode OFF/ON                [+]
  25. ;     8:Repeat mode OFF/ON                    [.]
  26.  
  27. ;8_16=    0:-
  28. ;    1:8 bits/16 bits                    [/]
  29.  
  30. ;Mo_St= 0:-
  31. ;    1:Mono/Stereo                        [*]
  32.  
  33. ;Freq=    0:-
  34. ;    1: 8195 Hz                        [7]
  35. ;    2: 9834 Hz                        [6]
  36. ;    3:12292 Hz                        [5]
  37. ;    4:16390 Hz                        [4]
  38. ;    5:19668 Hz                        [3]
  39. ;    6:24585 Hz                        [2]
  40. ;    7:32780 Hz                        [1]
  41. ;    8:49170 Hz                        [0]
  42. ;-------------------------------------------------------------------------------
  43.  
  44. ModuleLength=512*1024
  45.  
  46. INIT: ;Load the MODULE
  47.     MOVEA.L 4(SP),A6
  48.     ADDA    #128+1,A6
  49.     ;FILE_OPEN
  50.       CLR      -(SP)
  51.       PEA      (A6)
  52.       MOVE      #61,-(SP)
  53.       TRAP      #1
  54.       ADDQ      #8,SP
  55.     MOVE    D0,D7
  56.     BMI    FIN
  57.     LEA    MODULE,A6
  58.     ;FILE_READ
  59.       PEA      (A6)
  60.       MOVE.L  #ModuleLength,-(SP)
  61.       MOVE      D7,-(SP)
  62.       MOVE      #63,-(SP)
  63.       TRAP      #1
  64.       ADDA      #12,SP
  65.     MOVE.L    D0,D6
  66.     ;FILE_CLOSE
  67.       MOVE      D7,-(SP)
  68.       MOVE      #62,-(SP)
  69.       TRAP      #1
  70.       ADDQ      #4,SP
  71.     ;PROG_SUPERMODE
  72.       CLR.L   -(SP)
  73.       MOVE      #32,-(SP)
  74.       TRAP      #1
  75.       ADDQ      #6,SP
  76.       MOVEA.L D0,A5 ;Saved
  77.     LEA    CPU_MOD(PC),A4
  78.  
  79.     MOVE    #8,-(SP) ;49 KHz
  80.     MOVE    #1,-(SP) ;ST
  81.     MOVE    #1,-(SP) ;16b
  82.     MOVE    #1,-(SP) ;Power ON
  83.     JSR    (A4)
  84.     ADDQ    #8,SP
  85.  
  86.     MOVE.L    D6,-(SP)
  87.     PEA    (A6)
  88.     CLR    -(SP)
  89.     CLR    -(SP)
  90.     CLR    -(SP)
  91.     MOVE    #2,-(SP) ;Open MOD
  92.     JSR    (A4)
  93.     ADDA    #16,SP
  94.  
  95.     TST.B    D0
  96.     BNE    SORTIE
  97.  ;Extract the name of the module
  98.     LEA    MODULE,A0
  99.     LEA    NomMOD+10,A1
  100.     MOVEQ    #20-1,D0
  101. .1    MOVE.B    (A0)+,D1
  102.     BEQ.S    .aff
  103.     MOVE.B    D1,(A1)+
  104.     DBRA    D0,.1
  105.  
  106. .aff ;Print the page
  107.     PEA    PAGE(PC)
  108.     MOVE    #9,-(SP)
  109.     TRAP    #1
  110.     ADDQ    #6,SP
  111.     BRA.S    PLAY
  112.  
  113. ATT: ;Wait
  114.       ;A Key ?
  115.     MOVE    #2,-(SP)
  116.     MOVE    #1,-(SP)
  117.     TRAP    #13
  118.     ADDQ    #4,SP
  119.     TST    D0
  120.     BEQ    ATT
  121.     MOVE    #2,-(SP)
  122.     MOVE    #2,-(SP)
  123.     TRAP    #13
  124.     ADDQ    #4,SP
  125.  
  126.     CMPI.B    #27,D0 ;Esc
  127.     BEQ    SORTIE
  128.     CMPI.B    #' ',D0
  129.     BEQ.S    PLAY
  130.     CMPI.B    #'-',D0
  131.     BEQ.S    STOP
  132.     CMPI.B    #'(',D0
  133.     BEQ.S    SGRS
  134.     CMPI.B    #')',D0
  135.     BEQ.S    SGFS
  136.     CMPI.B    #'+',D0
  137.     BEQ.S    FAST
  138.     CMPI.B    #'.',D0
  139.     BEQ.S    REPEAT
  140.     CMPI.B    #'/',D0
  141.     BEQ.S    M8_16
  142.     CMPI.B    #'*',D0
  143.     BEQ.S    MO_ST
  144.     CMPI.B    #'0',D0
  145.     BLO    ATT
  146.     CMPI.B    #'7',D0
  147.     BLS.S    FREQ
  148.     BRA    ATT
  149.  
  150. CMD    CLR    -(SP)
  151.     CLR    -(SP)
  152.     CLR    -(SP)
  153.     MOVE    D0,-(SP)
  154.     JSR    (A4)
  155.     ADDQ    #8,SP
  156.     BRA    ATT
  157.  
  158. PLAY    MOVEQ    #3,D0
  159.     BRA    CMD
  160.  
  161. STOP    MOVEQ    #4,D0
  162.     BRA    CMD
  163.  
  164. SGRS    MOVEQ    #5,D0
  165.     BRA    CMD
  166.  
  167. SGFS    MOVEQ    #6,D0
  168.     BRA    CMD
  169.  
  170. FAST    MOVEQ    #7,D0
  171.     BRA    CMD
  172.  
  173. REPEAT    MOVEQ    #8,D0
  174.     BRA    CMD
  175.  
  176. HARD    MOVE    D2,-(SP)
  177.     MOVE    D1,-(SP)
  178.     MOVE    D0,-(SP)
  179.     CLR    -(SP)
  180.     JSR    (A4)
  181.     ADDQ    #8,SP
  182.     BRA    ATT
  183.  
  184. M8_16    MOVEQ    #1,D0
  185.     MOVEQ    #0,D1
  186.     MOVEQ    #0,D2
  187.     BRA    HARD
  188.  
  189. MO_ST    MOVEQ    #0,D0
  190.     MOVEQ    #1,D1
  191.     MOVEQ    #0,D2
  192.     BRA    HARD
  193.  
  194. FREQ    ANDI    #$FF,D0
  195.     SUBI    #'0',D0
  196.     MOVEQ    #8,D2
  197.     SUB    D0,D2
  198.     MOVEQ    #0,D0
  199.     MOVEQ    #0,D1
  200.     BRA    HARD
  201.  
  202. SORTIE    MOVE    #1,-(SP) ;Power OFF
  203.     JSR    (A4)
  204.     ADDQ    #2,SP
  205.  
  206.     ;PROG_SUPERMODE
  207.       PEA      (A5)
  208.       MOVE      #32,-(SP)
  209.       TRAP      #1
  210.       ADDQ      #6,SP
  211.  
  212. FIN:    ;PROG_END
  213.       CLR    -(SP)
  214.       TRAP    #1
  215.  
  216.  DATA
  217. PAGE:    DC.B 27,'f',27,'w',27,'q',27,'E'
  218. NomMOD    DC.B '<<<<<<<<<              >>>>>>>>>',13,10,13,10
  219.     DC.B '       Quit             [Esc]',13,10
  220.     DC.B '       Pause/',27,'p','Play',27,'q','            [SP]',13,10
  221.     DC.B '       Stop             [-]',13,10
  222.     DC.B '       Song position Reverse Search [(]',13,10
  223.     DC.B '       Song position Forward Search [)]',13,10
  224.     DC.B '       Fast Forward mode ',27,'p','OFF',27,'q','/ON     [+]',13,10
  225.     DC.B '       Repeat mode ',27,'p','OFF',27,'q','/ON        [.]',13,10
  226.     DC.B '       8 bits/',27,'p','16 bits',27,'q','            [/]',13,10
  227.     DC.B '       Mono/',27,'p','Stereo',27,'q','            [*]',13,10
  228.     DC.B '       ',27,'p','49170 Hz',27,'q','             [0]',13,10
  229.     DC.B '       32780 Hz            [1]',13,10
  230.     DC.B '       24585 Hz            [2]',13,10
  231.     DC.B '       19668 Hz            [3]',13,10
  232.     DC.B '       16390 Hz            [4]',13,10
  233.     DC.B '       12292 Hz            [5]',13,10
  234.     DC.B '        9834 Hz            [6]',13,10
  235.     DC.B '        8195 Hz            [7]',13,10,13,10
  236.     DC.B '       ',27,'p','REVERSE VIDEO',27,'q',': BY DEFAULT',13,10
  237.     DC.B '<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>',13,10
  238.     DC.B '<<<      Code: Patrick RUIZ       >>>',13,10
  239.     DC.B '<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>',13,10,0
  240.  
  241. CPU_MOD: INCBIN "CPU_MOD.BIN"
  242.  
  243.  BSS
  244.     DS.B 70000 ;for CPU_MOD.BIN just AFTER the code !!!
  245.  
  246. MODULE: DS.B ModuleLength
  247.  END
  248.